package cn.csg.iotplatform.module.system.service.project;

import javax.validation.*;
import cn.csg.iotplatform.module.system.controller.admin.project.vo.*;
import cn.csg.iotplatform.module.system.dal.dataobject.projectcopy.ProjectDO;
import cn.csg.iotplatform.framework.common.pojo.PageResult;

import java.util.Collection;
import java.util.List;

/**
 * 项目信息 Service 接口
 *
 * @author 系统管理员
 */
public interface ProjectService {

    /**
     * 创建项目信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createProject(@Valid ProjectSaveReqVO createReqVO);

    /**
     * 更新项目信息
     *
     * @param updateReqVO 更新信息
     */
    void updateProject(@Valid ProjectSaveReqVO updateReqVO);

    /**
     * 删除项目信息
     *
     * @param id 编号
     */
    void deleteProject(String id);

    /**
     * 获得项目信息
     *
     * @param id 编号
     * @return 项目信息
     */
    ProjectDO getProject(String id);

    /**
     * 获得项目信息分页
     *
     * @param pageReqVO 分页查询
     * @return 项目信息分页
     */
    PageResult<ProjectDO> getProjectPage(ProjectPageReqVO pageReqVO);

    void batchInsert(List<ProjectImportReqVO> list, boolean cover);

    void deleteBatchProject(String ids);

    ProjectUniqueRespVO checkProjectNoAndName(ProjectUniqueReqVO reqVO);

    List<ProjectDO> selectProjectList(Collection<String> projectIds);
}